// user.controller.js
const jwt = require("jsonwebtoken");
const path = require("path");
const {
    getContentByType,addContent,updateContent, removeContent
} = require("../service/content.service");
const {
    contentQueryError,contentAddError,contentUpdateError,contentRemoveError
} = require("../constant/err.type");

class ContentController {
  
  //依据类型获取内容
  async getContentByType(ctx, next) {
       
    try {
      const { category ,subcategory, pageNum = 1, pageSize = 10 } = ctx.request.query;
      const res = await getContentByType(category,subcategory, pageNum, pageSize);
      if (res) {
           
        ctx.body = {
          
          code: 0,
          message: "获取内容列表成功",
          data: res,
        }
      } else {
        ctx.app.emit("error", contentQueryError, ctx);
      }
    } catch (err) {
      console.error("获取内容列表失败", err);
    }
  }
  // 
  // 添加内容模块业务处理
  async addContent(ctx, next) {
    // 1.获取数据
    // console.log(ctx.request.body);
    const { name, description, imgUrl, category,subcategory, title, content } = ctx.request.body;
  
    try {
      // 2.操作数据库
      const res = await addContent(name, description, imgUrl, category,subcategory, title, content);
      // 3.返回结果
      ctx.body = {
        code: 0,
        message: "内容添加成功！",
        result: {
          id: res.id,
          name: res.name,
        },
      };
    } catch (error) {
      console.error("内容添加错误", ctx.request.body);
      ctx.app.emit("error", contentAddError, ctx);
    }
  }
  // 上传物品图片
  async upload(ctx, next) {
    
    const { file } = ctx.request.files;
    // console.log(file.filepath);
    // const fileTypes = ['image/jpeg', 'image/png']
    if (file) {
      // if (!fileTypes.includes(file.type)) {
      //     return ctx.app.emit('error', unSupportedFileType, ctx)
      // }
         
      ctx.body = {
        code: 0,
        message: '图片上传成功',
        result: {
          good_img: path.basename(file.filepath),
        }
      }
      
    } else {
      return ctx.app.emit('error', fileUploadError, ctx)
    }

  }
  // 更新内容
  async update(ctx) {
    // 1.获取数据
    console.log(ctx.params.id);
    try {
      const res = await updateContent(ctx.params.id, ctx.request.body);
      if (res) {
        ctx.body = {
          code: 0,
          message: "内容更新成功",
          result: '',
        }

      } else {
       return ctx.app.emit("error", contentUpdateError, ctx);
      }
    }
    catch (error) {
      console.error("内容更新失败", error);
    }
  }
  // 删除内容
  async remove(ctx) {
    // 1.获取数据
    const { id } = ctx.params;
    // 2.操作数据库
    try {
      const res = await removeContent(id);
      if (res) {
        ctx.body = {
          code: 0,
          message: "内容删除成功",
          result: '',
        }
      } else {
        ctx.app.emit("error", contentRemoveError, ctx);
      }
    }
    catch (error) {
      console.error("内容删除失败", error);
    }
  }
  
        
}
module.exports = new ContentController();
